****************************************************************************************************************************
Date: 30 august 2019

Purpose: Add parental income 1-15 years after child birth

****************************************************************************************************************************;

*Henter forældrenes ; 

libname in 'G:\Data\Rawdata\702727';

*Laver makro der henter alle datasæt ind;

%macro persondata(start,slut);
%do i=&start %to &slut;

data persondata&i;
set in.persondata&i(keep=pnr fodtdato arledgr LONIND erhver);

year=&i;

%end; 
%mend;
%persondata(1981,2008);
run;

data persondata;
set persondata1981 persondata1982 persondata1983 persondata1984 persondata1985 persondata1986 persondata1987 persondata1988
persondata1989 persondata1990 persondata1991 persondata1992 persondata1993 persondata1994 persondata1995 persondata1996 persondata1997 
persondata1998 persondata1999 persondata2000 persondata2001 persondata2002 persondata2003 persondata2004 persondata2005 persondata2006
persondata2007 persondata2008;
run;


proc datasets;
delete persondata1981-persondata2008;
quit; 




*_____________Forældrenes indkomst_______________; 


*Ændre indkomst til faste priser. 
Ganger indkomsten hvert år med indekset fra begyndelsesåret og dividerer med prisindekset i det pågældende år
Anvender forbrugerprisindekset fra Danmarks Statistiks hjemmeside. 2004 sættes som begyndelsesår;


data indkomst;
set persondata(keep=pnr lonind year);
run;

data indkomst;
set indkomst;
	IF year = 1980 THEN indkomst2004 = lonind*(108.3/45.6);
	IF year = 1981 THEN indkomst2004 = lonind*(108.3/51.0);
	IF year = 1982 THEN indkomst2004 = lonind*(108.3/56.1);
	IF year = 1983 THEN indkomst2004 = lonind*(108.3/60.0);
	IF year = 1984 THEN indkomst2004 = lonind*(108.3/63.8);
	IF year = 1985 THEN indkomst2004 = lonind*(108.3/66.7);
	IF year = 1986 THEN indkomst2004 = lonind*(108.3/69.2);
	IF year = 1987 THEN indkomst2004 = lonind*(108.3/72.0);
	IF year = 1988 THEN indkomst2004 = lonind*(108.3/75.3);
	IF year = 1989 THEN indkomst2004 = lonind*(108.3/78.9);
	IF year = 1990 THEN indkomst2004 = lonind*(108.3/80.9);
	IF year = 1991 THEN indkomst2004 = lonind*(108.3/82.9);
	IF year = 1992 THEN indkomst2004 = lonind*(108.3/84.6);
	IF year = 1993 THEN indkomst2004 = lonind*(108.3/85.7);
	IF year = 1994 THEN indkomst2004 = lonind*(108.3/87.4);
	IF year = 1995 THEN indkomst2004 = lonind*(108.3/89.2);
	IF year = 1996 THEN indkomst2004 = lonind*(108.3/91.1);
	IF year = 1997 THEN indkomst2004 = lonind*(108.3/93.1);
	IF year = 1998 THEN indkomst2004 = lonind*(108.3/94.8);
	IF year = 1999 THEN indkomst2004 = lonind*(108.3/97.2);
	IF year = 2000 THEN indkomst2004 = lonind*(108.3/100);
	IF year = 2001 THEN indkomst2004 = lonind*(108.3/102.4);
	IF year = 2002 THEN indkomst2004 = lonind*(108.3/104.8);
	IF year = 2003 THEN indkomst2004 = lonind*(108.3/107.0);
	IF year = 2004 THEN indkomst2004 = lonind*(108.3/108.3);
	IF year = 2005 THEN indkomst2004 = lonind*(101.8);
	IF year = 2006 THEN indkomst2004 = lonind*(103.8);
	IF year = 2007 THEN indkomst2004 = lonind*(105.6);
	IF year = 2008 THEN indkomst2004 = lonind*(109.1);

run;

proc sort data=indkomst;
by pnr;
run;


*Hvis bruttoindkomsten er negativ sættes den til missing;

data indkomst1;
set indkomst;

income=indkomst2004;

if indkomst2004<0 and indkomst2004^=. then income=.;

run;

data indkomst2;
set indkomst1;
keep pnr year income;
run;



****************************************************************
Omdøber variable så de kan matches med forældre i mit grunddata
****************************************************************;

data indkomst_mor;
set indkomst2;

rename pnr=pnrm;
rename year=year_mom;
rename income=income_mom;
run;

data indkomst_mor;
set indkomst_mor;
label pnrm="Personnummer - mor";
run;

data indkomst_far;
set indkomst2;

rename pnr=pnrf;
rename year=year_dad;
rename income=income_dad;
run;
data indkomst_far;
set indkomst_far;
label pnrf="Personnummer - far";
run;

proc sort data=indkomst_mor;
by pnrm;
run;
proc sort data=indkomst_far;
by pnrf;
run;



*****************************************************************************
Indhenter data om barnets fødselsdato

Må tilføje indkomst for hvert enkelt af moderens/faderen børn
	-Opdele child data i mors forskellige børn
	- tilføje indkomst til enkelte barn
*****************************************************************************;

libname in2 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data child;
set in2.nicu_controls (keep=pnr pnrm pnrf fodtdato birthyear);
run;

*Opdeler sample i moderens børn;
proc sort data=child;
by pnrm birthyear;
run;

data child;
set child;
d1=1;
by pnrm;
if first.pnrm then d2=d1;
else d2+d1;
run;

proc freq data=child;
table d2;
run;


*Opdeler sample i moderens børn; 
%macro born(start,slut);
%do i=&start %to &slut;

data barn&i;
set child ;
if d2=&i;
run;

%end;
%mend;
%born(1,8);


***************************************************************************
Merger nu indkomst på hver enkel sample med hvert enkelt barn.

- På den måde kan jeg få et mål for indkomst 1-10 år efter for hvert enkelt barn.
	Uanset birthorder mm. 
****************************************************************;

%macro barn(start,slut);
%do i=&start %to &slut;

**********************
*Merger med hoveddata
**********************;
*Mor; 
data indkomstmor_barn&i (drop=d1 d2);
merge barn&i (in=a) indkomst_mor;
by pnrm;
if a;
run;

data indkomstmor_barn&i;
set indkomstmor_barn&i;

*Laver makro for at skabe variablen for år 0 til 10;


%macro time(start,slut);
%do j=&start %to &slut;

if birthyear+&j=year_mom then M_income&j=income_mom;
%end; 
%mend;
%time(11,15);
run;

***************************
Kollapser data
***************************;

proc means data=indkomstmor_barn&i NWAY NOPRINT;
class pnrm;
var 
M_income11 M_income12 M_income13 M_income14 M_income15;
Output Out=temp_indkomstmor_barn&i min=;
run;


*Merger nu de dannede indkomstmål for år 0-10 på hvert barn;
proc sort data=temp_indkomstmor_barn&i (drop=_TYPE_ _FREQ_);
by pnrm;
run;

proc sort data=barn&i (drop= d1 d2);
by pnrm ;
run;

data Mincome_barn&i;
merge barn&i (in=a) temp_indkomstmor_barn&i;
by pnrm;
if a;
run;

%end; 
%mend;
%barn(1,8);
run;

*Kan nu sætte det 8 børnedtasæt sammen igen;
data Mincome;
set Mincome_barn1-Mincome_barn8;
run;

proc sort data=Mincome;
by pnrm birthyear;
run;

proc datasets;
delete child;
quit; 
proc datasets;
delete Mincome_barn1-Mincome_barn8;
quit; 
proc datasets;
delete indkomstmor_barn1-indkomstmor_barn8;
quit;
proc datasets;
delete temp_indkomstmor_barn1-temp_indkomstmor_barn8;
quit;
proc datasets;
delete barn1-barn8;
quit; 


*********************************

Gør nu tilsvarende for far

*********************************; 
libname in2 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data child;
set in2.nicu_controls (keep=pnr pnrm pnrf fodtdato birthyear);
run;

*Opdeler sample i moderens børn;
proc sort data=child;
by pnrf birthyear;
run;

data child;
set child;
d1=1;
by pnrf;
if first.pnrf then d2=d1;
else d2+d1;
run;

proc freq data=child;
table d2;
run;

*Opdeler sample i faderens børn; 
%macro born(start,slut);
%do i=&start %to &slut;

data barn&i;
set child ;
if d2=&i;
run;

%end;
%mend;
%born(1,8);


***************************************************************************
Merger nu indkomst på hver enkel sample med hvert enkelt barn.

- På den måde kan jeg få et mål for indkomst 1-10 år efter for hvert enkelt barn.
	Uanset birthorder mm. 
****************************************************************;

%macro barn(start,slut);
%do i=&start %to &slut;

**********************
*Merger med hoveddata
**********************;
*Mor; 
data indkomstfar_barn&i (drop=d1 d2);
merge barn&i (in=a) indkomst_far;
by pnrf;
if a;
run;

data indkomstfar_barn&i;
set indkomstfar_barn&i;

*Laver makro for at skabe variablen for år 0 til 10;


%macro time(start,slut);
%do j=&start %to &slut;

if birthyear+&j=year_dad then F_income&j=income_dad;
%end; 
%mend;
%time(11,15);
run;

***************************
Kollapser data
***************************;

proc means data=indkomstfar_barn&i NWAY NOPRINT;
class pnrf;
var 
F_income11 F_income12 F_income13 F_income14 F_income15;
Output Out=temp_indkomstfar_barn&i min=;
run;


*Merger nu de dannede indkomstmål for år 0-10 på hvert barn;
proc sort data=temp_indkomstfar_barn&i (drop=_TYPE_ _FREQ_);
by pnrf;
run;

proc sort data=barn&i (drop= d1 d2);
by pnrf;
run;

data Fincome_barn&i;
merge barn&i (in=a) temp_indkomstfar_barn&i;
by pnrf;
if a;
run;

%end; 
%mend;
%barn(1,8);
run;

*Kan nu sætte det 8 børnedtasæt sammen igen;
data Fincome;
set Fincome_barn1-Fincome_barn8;
run;

proc sort data=Fincome;
by pnrf birthyear;
run;

proc datasets;
delete child;
quit; 
proc datasets;
delete Fincome_barn1-Fincome_barn8;
quit; 
proc datasets;
delete indkomstfar_barn1-indkomstfar_barn8;
quit;
proc datasets;
delete temp_indkomstfar_barn1-temp_indkomstfar_barn8;
quit;
proc datasets;
delete barn1-barn8;
quit; 



**************************************************************************
Samler nu i ét datasæt - merge på mit fulde datasæt
**************************************************************************;
libname in3 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data child;
set in3.nicu_parentalhealth (keep=pnr pnrm pnrf fodtdato);
run;
proc sort data=Mincome;
by pnr;
run;

proc sort data=Fincome;
by pnr;
run;

proc sort data= child;
by pnr;
run;

*******************************************
Kan nu merge dette på mit fulde datasæt
*******************************************;

*mor;
data sample_income;
merge child (in=a) Mincome;
by pnr;
if a;
run;
*far;
data sample_income;
merge sample_income (in=b) Fincome;
by pnr;
if b;
run;

proc means data=sample_income;
var 
M_income11 M_income12 M_income13 M_income14 M_income15
F_income11 F_income12 F_income13 F_income14 F_income15;
run;



**************************************************************************************
Danner nu variable for: 
labor supply Intensive og extensive margin 0 til 10 år efter første barn fødes

	-Henter først rådata
*************************************************************************************;

proc freq data=persondata;
table year;
run;


proc sort data=persondata;
by pnr year;
run;

*Lagger for at have sidste års erfaring, på den måde kan jeg finder hvad dette år har tilføjet.;

data persondata1;
set persondata;

lag_erhverv=lag1(erhver);

run;

*hvis første obs af individ returneres erhver, hvis ikke beregnes hvor meget erfaring det pågældende år har tilført;
data persondata1;
set persondata1;
by pnr year;

dif_erhverv=ifn(first.pnr,erhver,erhver-lag_erhverv);

run;

*Sletter første observation af individ;
data laborsup;
set persondata1;
by pnr;
if first.pnr then delete;
run;


proc freq data=laborsup;
table dif_erhverv ;
run;

***********************************************************
ERHVER nulstilles for personer der har været i udlandet
da det ikke har indgået i befolkningen et eller flere år
	Laver indikator for om individet har været i udlandet. 
***********************************************************;

data laborsup1;
set laborsup;
if dif_erhverv<0 and dif_erhverv^=. then d1=1;
run;

proc sort data=laborsup1;
by pnr descending d1;
run;


data laborsup1;
set laborsup1;
by pnr;
if first.pnr then d2=d1;

run;

data laborsup1;
set laborsup1;
by pnr;
if first.pnr then abroad=d2;
else abroad+d2;
run;

proc freq data=laborsup1;
table dif_erhverv abroad;
run;


*Dropper de tilfælde hvor dif_erhver er mindre end nul! (ca. 186000 observationer);

data laborsup2;
set laborsup1;

if dif_erhverv<0 and dif_erhverv^=.  then delete;
run;


*Omdøber laborsupply data så jeg kan merge på mor;
data laborsup_mor;
set laborsup2;
rename pnr=pnrm;
rename year=year_mom;
rename dif_erhverv=dif_erhverv_mom;

run;

data laborsup_mor;
set laborsup_mor;
label pnrm="Personnummer - mor";
run;

*Omdøber laborsupply data så jeg kan merge på far;
data laborsup_far;
set laborsup2;
rename pnr=pnrf;
rename year=year_dad;
rename dif_erhverv=dif_erhverv_dad;

run;

data laborsup_far;
set laborsup_far;
label pnrf="Personnummer - far";
run;

proc sort data=laborsup_mor (keep=pnrm year_mom dif_erhverv_mom);
by pnrm;
run;
proc sort data=laborsup_far (keep=pnrf year_dad dif_erhverv_dad);
by pnrf;
run;


proc datasets;
delete child;
quit;



*****************************************************************************
Indhenter data om barnets fødselsdato

Må tilføje labor supply for hvert enkelt af moderens/faderen børn
	-Opdele child data i mors forskellige børn
	- tilføje indkomst til enkelte barn
*****************************************************************************;
libname in4 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data child;
set in4.nicu_controls (keep=pnr pnrm pnrf fodtdato birthyear);
run;

*Opdeler sample i moderens børn;
proc sort data=child;
by pnrm birthyear;
run;

data child;
set child;
d1=1;
by pnrm;
if first.pnrm then d2=d1;
else d2+d1;
run;

proc freq data=child;
table d2;
run;


*Opdeler sample i moderens børn; 
%macro born(start,slut);
%do i=&start %to &slut;

data barn&i;
set child ;
if d2=&i;
run;

%end;
%mend;
%born(1,8);

/*

proc means data=laborsupmor_barn1 NWAY NOPRINT;
class pnrm;
var M_extsup0 M_extsup1 M_extsup2 M_extsup3 M_extsup4 M_extsup5 M_extsup6 M_extsup7 M_extsup8 M_extsup9 M_extsup10;
Output Out=test min=;
run;
*/







***************************************************************************
Merger nu indkomst på hver enkel sample med hvert enkelt barn.

- På den måde kan jeg få et mål for indkomst 1-10 år efter for hvert enkelt barn.
	Uanset birthorder mm. 
****************************************************************;

%macro barn(start,slut);
%do i=&start %to &slut;

**********************
*Merger med hoveddata
**********************;
*Mor; 
data laborsupmor_barn&i (drop=d1 d2);
merge barn&i (in=a) laborsup_mor;
by pnrm;
if a;
run;

*Laver makro for at skabe variablen for år 0 til 10;
*Intensive margin;
data laborsupmor_barn&i;
set laborsupmor_barn&i;

%macro time(start,slut);
%do j=&start %to &slut;

if birthyear+&j=year_mom then M_intsup&j=dif_erhverv_mom/(1000/260);
%end; 
%mend;
%time(11,15);
run;

*Extensive margin;

*Laver makro for at skabe variablen for år 0 til 10;
data laborsupmor_barn&i;
set laborsupmor_barn&i;

%macro timetwo(start,slut);
%do k=&start %to &slut;

M_extsup&k=.;
if birthyear+&k=year_mom and dif_erhverv_mom^=0 then M_extsup&k=1;
if birthyear+&k=year_mom and dif_erhverv_mom=0 then M_extsup&k=0;
%end; 
%mend;
%timetwo(11,15);
run;


******************************************************
Kolapserdata
******************************************************;
proc means data=laborsupmor_barn&i NWAY NOPRINT;
class pnrm;
var 
M_extsup11 M_extsup12 M_extsup13 M_extsup14 M_extsup15
M_intsup11 M_intsup12 M_intsup13 M_intsup14 M_intsup15
;
Output Out=temp_laborsupmor_barn&i min=;
run;

*Merger nu de dannede labor supply mål for år 0-10 på hvert barn;
proc sort data=temp_laborsupmor_barn&i (drop=_TYPE_ _FREQ_);
by pnrm;
run;

proc sort data=barn&i (drop= d1 d2);
by pnrm ;
run;

data Mlaborsup_barn&i;
merge barn&i (in=a) temp_laborsupmor_barn&i;
by pnrm;
if a;
run;


%end; 
%mend;
%barn(1,8);
run;

*Kan nu sætte det 8 børnedtasæt sammen igen;
data Mlaborsup;
set Mlaborsup_barn1-Mlaborsup_barn8;
run;

proc sort data=Mlaborsup;
by pnrm birthyear;
run;

proc datasets;
delete child;
quit; 
proc datasets;
delete Mlaborsup_barn1-Mlaborsup_barn8;
quit; 
proc datasets;
delete laborsupmor_barn1-laborsupmor_barn8;
quit;
proc datasets;
delete temp_laborsupmor_barn1-temp_laborsupmor_barn8;
quit;
proc datasets;
delete barn1-barn8;
quit; 


*********************************

Gør nu tilsvarende for far

*********************************; 

libname in5 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data child;
set in5.nicu_controls (keep=pnr pnrm pnrf fodtdato birthyear);
run;

*Opdeler sample i moderens børn;
proc sort data=child;
by pnrf birthyear;
run;

data child;
set child;
d1=1;
by pnrf;
if first.pnrf then d2=d1;
else d2+d1;
run;

proc freq data=child;
table d2;
run;


*Opdeler sample i moderens børn; 
%macro born(start,slut);
%do i=&start %to &slut;

data barn&i;
set child ;
if d2=&i;
run;

%end;
%mend;
%born(1,8);


***************************************************************************
Merger nu indkomst på hver enkel sample med hvert enkelt barn.

- På den måde kan jeg få et mål for indkomst 1-10 år efter for hvert enkelt barn.
	Uanset birthorder mm. 
****************************************************************;

%macro barn(start,slut);
%do i=&start %to &slut;

**********************
*Merger med hoveddata
**********************;
*Mor; 
data laborsupfar_barn&i (drop=d1 d2);
merge barn&i (in=a) laborsup_far;
by pnrf;
if a;
run;

*Laver makro for at skabe variablen for år 0 til 10;
*Intensive margin;
data laborsupfar_barn&i;
set laborsupfar_barn&i;

%macro time(start,slut);
%do j=&start %to &slut;

if birthyear+&j=year_dad then F_intsup&j=dif_erhverv_dad/(1000/260);
%end; 
%mend;
%time(11,15);
run;

*Extensive margin;

*Laver makro for at skabe variablen for år 0 til 10;
data laborsupfar_barn&i;
set laborsupfar_barn&i;

%macro timetwo(start,slut);
%do k=&start %to &slut;

if birthyear+&k=year_dad and dif_erhverv_dad^=0 then F_extsup&k=1;
if birthyear+&k=year_dad and dif_erhverv_dad=0 then F_extsup&k=0;
%end; 
%mend;
%timetwo(11,15);
run;


******************************************************
Kolapserdata
******************************************************;
proc means data=laborsupfar_barn&i NWAY NOPRINT;
class pnrf;
var
F_extsup11 F_extsup12 F_extsup13 F_extsup14 F_extsup15 
F_intsup11 F_intsup12 F_intsup13 F_intsup14 F_intsup15
;
Output Out=temp_laborsupfar_barn&i min=;
run;


*Merger nu de dannede labor supply mål for år 0-10 på hvert barn;
proc sort data=temp_laborsupfar_barn&i (drop=_TYPE_ _FREQ_);
by pnrf;
run;

proc sort data=barn&i (drop= d1 d2);
by pnrf ;
run;

data Flaborsup_barn&i;
merge barn&i (in=a) temp_laborsupfar_barn&i;
by pnrf;
if a;
run;

%end; 
%mend;
%barn(1,8);
run;

*Kan nu sætte det 8 børnedtasæt sammen igen;
data Flaborsup;
set Flaborsup_barn1-Flaborsup_barn8;
run;

proc sort data=Flaborsup;
by pnrf birthyear;
run;

proc datasets;
delete child;
quit; 
proc datasets;
delete Flaborsup_barn1-Flaborsup_barn8;
quit; 
proc datasets;
delete laborsupfar_barn1-laborsupfar_barn8;
quit;
proc datasets;
delete temp_laborsupfar_barn1-temp_laborsupfar_barn8;
quit;
proc datasets;
delete barn1-barn8;
quit; 


**************************************************************************
Samler nu i ét datasæt - merge på mit indkomst datasæt
**************************************************************************;

proc sort data=Mlaborsup;
by pnr;
run;

proc sort data=Flaborsup;
by pnr;
run;

proc sort data=sample_income;
by pnr;
run;

*******************************************
Kan nu merge dette på mit fulde datasæt
*******************************************;

*mor;
data sample_laborsup;
merge sample_income (in=a) Mlaborsup;
by pnr;
if a;
run;
*far;
data sample_laborsup;
merge sample_laborsup (in=a) Flaborsup;
by pnr;
if a;
run;

proc means data=sample_laborsup;
var 
M_income11 M_income12 M_income13 M_income14 M_income15
F_income11 F_income12 F_income13 F_income14 F_income15
F_extsup11 F_extsup12 F_extsup13 F_extsup14 F_extsup15
M_extsup11 M_extsup12 M_extsup13 M_extsup14 M_extsup15 
F_intsup11 F_intsup12 F_intsup13 F_intsup14 F_intsup15
M_intsup11 M_intsup12 M_intsup13 M_intsup14 M_intsup15
;
run;


**************************************************************************
Samler nu i ét datasæt - merge på mit fulde datasæt
**************************************************************************;
libname in5 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data nicu;
set in5.nicu_controls;
run;
proc sort data=sample_laborsup;
by pnr;
run;

proc sort data=nicu;
by pnr;
run;


*******************************************
Kan nu merge dette på mit fulde datasæt
*******************************************;

*mor;
data nicu_LS;
merge nicu (in=a) sample_laborsup;
by pnr;
if a;
run;

*Gemmer i nyt datasæt;
libname out 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data out.nicu_LS_rev060919;
set nicu_LS;
run;

